package com.zhentao.day01.pm;

import java.util.*;

public class ListTest {

 /* public static void out(int... is){

    for (int i = 0; i < is.length; i++) {
      System.out.println(is[i]);
    }

  }*/

  public static void main(String[] args) {


    List list = new ArrayList();

    list.add("hello"); list.add("word"); list.add(true);
    list.add(1.0); list.add(1); list.add('男'); list.add(1);

    for (int i = 0; i < list.size(); i++) {
      System.out.print("list.get(i) = " + list.get(i) +"\t");
    }
    System.out.println("----------------------------------------");
    list.remove(0); // 通过下标索引删除值
    list.set(0,"h");// 通过索引实现内容的修改
    for (int i = 0; i < list.size(); i++) {
      System.out.print("list.get(i) = " + list.get(i) +"\t");
    }
    // list接口创建了一个 iterator 方法, 当前方法,在内部实现了返回一个 Iterator 的实例 ( 迭代器实例 ),
    // 当前实例是一个接口实例, 它里面有两个方法。
    Iterator it = list.iterator();
    // it.hasNext() 是从下标0 开始判断下标上是否有值, 如果有值返回true 返之返回false

    while(it.hasNext()){
      // next() 它做了两个操作, : 1 . 实现将下标索引位置上的值返回给方法调用者;
      // 2.实现将索引向下移一位。
      System.out.println("it.next() = " + it.next());
    }

    System.out.println("list.indexOf(\"hello\") = " + list.indexOf("hello"));
    System.out.println("list.lastIndexOf(1) = " + list.lastIndexOf(1));

    /*int is [] = {1,2,3,4,5};

    List list = new ArrayList();

    List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);// list1 不能改变长度

    list.addAll(list1);
    list.add("hello");
    List list2 = list.subList(1,5);

    for (int i = 0; i < list2.size(); i++) {
      System.out.println("list.get(i) = " + list2.get(i));
    }*/






    // out(is);


    // 用 Arrays 工具类的 asList 转换的集合 , 大小不能做改变 可以快速的实现查看, 但不能实现添加,
    // [1,2,3,4,5] // 对象
    // List list = Arrays.asList(1,2,3,4,5); // UnsupportedOperationException
    //
    // // list.add("asdf");
    // // list.remove(0);
    // for (int i = 0; i < list.size(); i++) {
    //   System.out.println("list.get(i) = " + list.get(i));
    // }

    /*Collection cll = new ArrayList(); // 以数组的形式生成的集合。
    // 在未声明泛型时, 集合是可以添加任意类型的数据的。
    cll.add("hello");// 集合添加元素
    cll.add("word");
    cll.add(true);
    cll.add(1.0);
    cll.add(1);
    cll.add('男');

    ArrayList as = (ArrayList) cll;*/
    /*for (int i = 0; i < as.size(); i++) {
      System.out.println("as.get(i) = " + as.get(i));
    }*/




  }
}
